import { login,logout,getUserInfo } from '../../api/user';

export default {
    state: {
        userName: '',
        userId: '',
        avatorImgPath: '',
        token: '',
        access: '',
        msg : '输入任意用户名和密码即可'
    },
    getters: {
        msg(state, getters, rootState){
            return rootState.user.msg;
        },
        token(state, getters, rootState){
            return rootState.user.token;
        }
    },
    mutations: {
        setAvator(state, avatorPath) {
            state.avatorImgPath = avatorPath;
        },
        setUserId(state, id) {
            state.userId = id;
        },
        setUserName(state, name) {
            state.userName = name;
        },
        setAccess(state, access) {
            state.access = access;
        },
        setToken(state, token) {
            state.token = token;
        },
        setMsg(state,msg){
            state.msg = msg;
        }
    },
    actions: {
        handleLogin ({ commit }, {userName, password}) {
            userName = userName.trim();
            return new Promise((resolve, reject) => {
                login({
                    userName,
                    password
                }).then(res => {
                    console.log(res);
                    if(!res.success){
                        commit('setMsg', res.msg)
                    }else{
                        commit('setToken', res.token)
                    }
                    resolve();
                }).catch(err => {
                    reject(err);
                });
            });
        },
        // 退出登录
        handleLogOut ({ state, commit }) {
            return new Promise((resolve, reject) => {
                logout(state.token).then(() => {
                    commit('setToken', '')
                    commit('setAccess', [])
                    resolve()
                }).catch(err => {
                    reject(err)
                })
                // 如果你的退出登录无需请求接口，则可以直接使用下面三行代码而无需使用logout调用接口
                // commit('setToken', '')
                // commit('setAccess', [])
                // resolve()
            })
        },
        // 获取用户相关信息
        getUserInfo ({ state, commit }) {
            return new Promise((resolve, reject) => {
                getUserInfo(state.token).then(res => {
                    commit('setAvator', res.avator)
                    commit('setUserName', res.user_name)
                    commit('setUserId', res.user_id)
                    commit('setAccess', res.access)
                    resolve(res);
                }).catch(err => {
                    reject(err);
                });
            });
        }
    }
};
